!-------------------------------------------------------------LICENSE--------------------------------------------------------------!
!                                                                                                                                  !
!The MAP code is written in Fortran language for magnetohydrodynamics (MHD) calculation with the adaptive mesh refinement (AMR)    !
!and Message Passing Interface (MPI) parallelization.                                                                              !
!                                                                                                                                  !
!Copyright (C) 2012                                                                                                                !
!Ronglin Jiang                                                                                                                     !
!rljiang@ssc.net.cn                                                                                                                !
!585 Guoshoujing Road. Pudong, Shanghai, P.R.C. 201203                                                                             !
!                                                                                                                                  !
!This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License         !
!as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.             !
!                                                                                                                                  !
!This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of    !
!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.                        !
!                                                                                                                                  !
!You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software     !
!Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.                                                   !
!                                                                                                                                  !
!-------------------------------------------------------------LICENSE--------------------------------------------------------------!

!==============================================================================================================================================|
module block_define
!==============================================================================================================================================|

   use parameters
   implicit none
!----------------------------------------------------------------------------------------------------------------------------------------------|

   type block_pointer

      type(block), pointer :: pblock

   end type block_pointer

!----------------------------------------------------------------------------------------------------------------------------------------------|
   type block

      character(10) :: id
      integer(4) :: lv = -1, nx = 0, nc = 0, p_pos = 0, flag_skip = 0
      integer(4), dimension(2) :: neigh_lv = 0

      real(8) :: dx, dt, t
      real(8), dimension(:), allocatable :: x, ro, mx, my, mz, bx, by, bz, en
      real(8), dimension(:, :), allocatable :: flux_bnd

      type(block), pointer :: pp => null()
      type(block), dimension(:), pointer :: child
      type(block_pointer), dimension(:, :), allocatable :: neigh

   end type block

end module block_define
